多线程编程 python

使用的模块介绍:python模块学习:multiprocessing模块 多线程锁

自己在代码中见到的:

# 来源:10篇方法总结里的Drebin代码
import multiprocessing as mp

processes = []  
lock = mp.Lock()




if njobs < 0:  # njobs  指并行处理的任务或作业数量,作为函数的输入
	nproc = mp.cpu_count() - 2 # 计算可用的CPU核心数并减去2(给系统留出一些资源),赋值给变量 nproc,即确定并行处理的进程数。  
	# nproc  指并行处理的进程数量
	part_size = n_files // nproc # 计算每个进程需要处理的文件数量 part_size,通过整除操作(//)获得  
else:  
	nproc = njobs  
	part_size = n_files // nproc

init_idx = 0 # 初始索引  
fin_idx = 0 # 结束索引  
for pn in range(nproc - 1):  
	init_idx = pn * part_size # 开始的位置  
	fin_idx = (pn + 1) * part_size # 结束的位置  
	processes.append( # 创建的进程对象添加到 processes 列表中  
	mp.Process(target=self._writeAPKfeatures, args=(files[init_idx:fin_idx], self._working_path, lock))  
	)  # 创建一个进程对象(目标函数=...,目标函数的参数=...,  
	processes[pn].start() # 通过 processes[pn].start() 启动这些进程进行并行处理  
  
# 这个进程也会工作,处理剩下的  
self._writeAPKfeatures(files[fin_idx:], self._working_path, lock)  
  
# 让当前进程(通常是主进程)等待指定的子进程执行完成后再继续执行后续的代码
for proc in processes:  
proc.join()
# 依次调用每个进程的 join()方法,但调用 join() 并不会暂停进程的执行